package com.qiujie.util;

import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;

public class SeniorityUtil {

    public static int calculate(Date entryDate) {
        // 空值保护
        if (entryDate == null) return 0;

        // 使用中国时区转换日期
        LocalDate entry = entryDate.toInstant()
                .atZone(ZoneId.of("Asia/Shanghai"))
                .toLocalDate();
        LocalDate now = LocalDate.now();

        // 处理未来日期（入职日期晚于当前日期）
        if (entry.isAfter(now)) return 0;

        // 计算基准年份差
        int baseYears = now.getYear() - entry.getYear();

        // 获取当年的入职纪念日
        LocalDate anniversary = entry.withYear(now.getYear());

        // 处理闰年2月29日特殊情况
        if (entry.getMonthValue() == 2 && entry.getDayOfMonth() == 29) {
            if (!now.isLeapYear()) {
                anniversary = anniversary.withDayOfMonth(28);
            }
        }

        // 判断是否已过周年
        return (now.isBefore(anniversary)) ? Math.max(baseYears - 1, 0) : baseYears;
    }
}
